Έχω μια δομή: δομή wordItem { λέξη συμβολοσειράς; int count? }; Διαβάζω σε ένα αρχείο κειμένου με πολλές διαφορετικές λέξεις και τα αποθηκεύω σε πίνακα. ifstream inputFile ("data.txt"); εάν (inputFile.is_open ()) { ενώ (getline (inputFile, data, ")) { wordItemList [i] .word = δεδομένα; i ++; } } Η ερώτησή μου είναι ποιος είναι ο καλύτερος τρόπος μέτρησης κάθε φορά που εμφανίζεται μια λέξη στον πίνακα. Για παράδειγμα, εάν το αρχείο data.txt ήταν η αλεπού πήδηξε πάνω από το φράχτη Θέλω να μπορώ να αποθηκεύω πόσες φορές κάθε λέξη εμφανίζεται εντός της δομής εντός του "int count"
2021-02-22 08:11:26
ifstream inputFile ("data.txt"); αν (! inputFile.is_open ()) { cerr << "Δεν μπορώ να ανοίξω data.txt \ n"; έξοδος (0); } χάρτηςfreq; ενώ (getline (inputFile, word, ")) ++ freq [λέξη]; | Χρησιμοποιήστε ένα std :: multiset ή std :: unordered_multiset. Η απόδοση εξαρτάται λίγο από το σύνολο δεδομένων σας, οπότε απαιτείται κάποια ρύθμιση για να βρείτε το καλύτερο στην πράξη. Κάτι σαν αυτό θα λειτουργούσε (προσαρμόστε τον κωδικό ανάγνωσης αρχείων): # συμπερίληψη # συμπερίληψη int main () { std :: unordered_multiset υπαγωγή; για (auto && s: {"word1", "word2", "word1"}) { dict.insert (s); } std :: cout <